b2_lvs服务器安装
注:用作数据库
系统环境:centos6.5
部署机器:10.64.2.13-14

#阿里云yum
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.`date +%Y%M%d`
wget http://mirrors.aliyun.com/repo/Centos-6.repo
wget http://mirrors.aliyun.com/repo/epel.repo

yum clean all
yum makecache
yum repolist
yum list

一、安装配置NFS（两台都需要安装）
#安装nfs-utils
yum -y install nfs-utils

#配置共享目录
vim  /etc/exports
#增加一行：
/home/nfsdata  10.64.2.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0) 将/home/nfsdata  目录共享给10.64.2网段机器，权限为读写

#重启nfs和rpcbind服务,注意重启顺序，先重启rpcbind，然后重启nfs
service rpcbind restart;  
service nfs restart ;

#检验nfs共享目录是否成功共享
exportfs
/home/nfsdata   192.168.16.0/24

showmount -e
Export list for localhost.localdomain:
/home/nfsdata 192.168.16.0/24

#修改nfs服务器hosts，添加
vim /etc/hosts
127.0.0.1   ***   确保能够解析自己的域名

二、客户端手动挂载nfs服务器上共享的目录
#安装nfs-utils
yum -y install nfs-utils
mkdir /home/nfsdata   在客户端创建挂载点目录
mount 192.168.16.4:/home/nfsdata/  /home/nfsdata/  挂载服务器目录到当前目录

#查看是否挂载成功
mount | grep nfs
ls /home/nfsdata
#客户端启动自动挂载nfs系统
vim  /etc/fstab
添加如下
192.168.16.4:/home/nfsdata/  /home/nfsdata/        nfs     defaults         0 0


##Inotify+Rsync(两台机器都要安装)
#安装Inotify
wget --no-check-certificate http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

#环境预安装
yum install gcc
#编译
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

##Rsync：
#安装Rsync
yum install rsync -y

#写入rsync配置文件
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections=99
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
 
[syncdir]  
path = /home/nfsdata/
comment = rsync from server ***
read only = no
list = on
auth users = rsyncuser
secrets file = /etc/secrets.pas

#写入secret文件
vim /etc/secrets.pas
rsyncuser:1234-qwer

#写入客户端密码文件
vim /etc/rsync.pas
1234-qwer

#修改secret文件权限为600
chmod 600 /etc/secrets.pas 
#修改客户端密码文件权限为600
chmod 600 /etc/rsync.pas

##Master服务器文件同步配置：
#写入监控同步脚本
vim /etc/keepalived/inotify_rsync.sh
#!/bin/sh
#function : rysnc MASTERIP  to  BACKUPIP
log=/var/log/rsync.log
src="/home/nfsdata/"
host="192.168.16.5"
module="syncdir"

/usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $src \
| while read DATE TIME DIR FILE; do

     FILECHANGE=${DIR}${FILE}

       /usr/bin/rsync -avH --delete  --progress --password-file=/etc/rsync.pas $src  --exclude-from="/etc/inotify/rules.txt" rsyncuser@$host::$module &
       echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
done

#创建rsync规则文件
mkdir -p /etc/inotify 
touch /etc/inotify/rules.txt

#带监控脚本
#!/bin/sh
#function : rysnc MASTERIP  to  BACKUPIP
log=/var/log/rsync.log
src="/home/nfsdata/"
host="192.168.16.5"
module="syncdir"

pid_count=`ps -ef | grep '/usr/local/bin/inotifywait -mr --timefmt %d/%m/%y %H:%M --format %T %w %f -e close_write,modify,delete,create,attrib /home/nfsdata/' | grep -v 'grep' |wc -l`

rsync_file(){
        /usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $src \
        | while read DATE TIME DIR FILE; do

       FILECHANGE=${DIR}${FILE}

       /usr/bin/rsync -avH --delete  --progress --password-file=/etc/rsync.pas $src  --exclude-from="/etc/inotify/rules.txt" rsyncuser@$host::$module &
       echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
          done
}

if (( ${pid_count} < 1 )); then
rsync_file &
/usr/bin/rsync -avH --delete  --progress --password-file=/etc/rsync.pas /home/nfsdata/  --exclude-from="/etc/inotify/rules.txt" rsyncuser@192.168.16.5::syncdir &
fi

#启动同步脚本
nohup /etc/keepalived/inotify_rsync.sh & 
为该同步进程配置监控如zabbix监控。

##Backup服务器文件同步配置：
#启动rsync daemon
rsync --daemon --config=/etc/rsyncd.conf

#至此， 可以在Master服务器NFS路径下添加和修改文件，测试文件同步功能是否可用。



##Master服务器Keepalived 配置：
#安装keepalived 
yum install keepalived （如果服务器上已经安装过，可跳过该步骤）

#添加下面配置到/etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf : 
vrrp_instance VIP_NFS {
    state MASTER
    interface eth0   #如为实体服务器，此网卡应当填写正确的在试用的网卡名
    lvs_sync_daemon_interface eth0 #如为实体服务器，此网卡应当填写正确的在试用的网卡名
    virtual_router_id 111   #此ID主备服务器应一致
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.4.177
    }
}

#重新启动keepalived
service keepalived restart

#查看虚拟ip是否正确发布
ip addr
inet 10.0.4.177/32 scope global eth0

##Backup服务器keepalived 配置：
#安装keepalived
yum install keepalived （如果服务器上已经安装过，可跳过该步骤）

#添加下面配置到/etc/keepalived/keepalived.conf : 
vim /etc/keepalived/keepalived.conf
vrrp_instance VIP_NFS {
    state BACKUP
    interface eth0  #如为实体服务器，此网卡应当填写正确的在试用的网卡名
    lvs_sync_daemon_interface eth0  #如为实体服务器，此网卡应当填写正确的在试用的网卡名
    virtual_router_id 111  #此ID主备服务器应一致
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.4.177
    }
    notify_master /etc/keepalived/ChangeToMaster.sh
    notify_backup /etc/keepalived/ChangeToBackup.sh
}

#添加notify文件：
vim /etc/keepalived/ChangeToMaster.sh
#!/bin/bash
service nfs restart
ssh root@{客户机IP} "umount -f /home/nfsdata"
ssh root@{客户机IP} "mount -t nfs {NFS虚拟IP}:/home/nfsdata /home/nfsdata"

vim /etc/keepalived/ChangeToBackup.sh
#!/bin/bash
ssh root@{客户机IP} "umount -f /home/nfsdata"
ssh root@{客户机IP} "mount -t nfs {NFS虚拟IP}:/home/nfsdata /home/nfsdata"

#修改notify文件为可执行文件
chmod +x /etc/keepalived/ChangeT*

#配置NFS客户机与Backup服务器ssh免认证，效果为Backup服务器root用户ssh登陆nfs客户机不需要输入密码。(此部略)
cd
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.16.9



所有服务器启动顺序
启动两台机器nfs
service rpcbind restart;  
service nfs restart ;

inotify+rsync脚本
从:rsync --daemon --config=/etc/rsyncd.conf
主:cd /etc/keepalived/
   nohup /etc/keepalived/inotify_rsync.sh &

重新启动keepalived
主:/etc/init.d/keepalived restart
从:/etc/init.d/keepalived restart
###########################################################################################################
配置过程结束，可以测试nfs虚拟Ip浮动切换功能：
1.	在客户机上mount nfs:> mount -t nfs {NFS虚拟IP}:/home/nfsdata /home/nfsdata
2.	查看客户机上nfs状态:> df 
10.0.4.177:/home/nfsdata           18134400   1057664  16155648   7% /home/nfsdata
出现上述字样则为mount成功。
3.	关闭master keepalived 服务:> service keepalived stop
4.	查看backup 服务器是否发布了nfs虚拟ip:> ip a
5.	大约10秒后查看nfs客户机上nfs状态，同第二步， 并查看nfs路径下的文件是否可用。
6.	重新启动master keepalived 服务:> service keepalived start
7.	大约5秒查看backup服务器是否还发布nfs虚拟ip ， 如仍然有虚拟ip, 应当检查keepalived服务配置。
8.	查看master服务器nfs虚拟ip是否正确发布。
9.	查看nfs客户机nfs可用性。


